package bio_nio_aio.bio.ClinetCommunication;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

/**
 * BIO 模式下的端口转发思想
 * 1. 注册端口
 * 2. 接受 socket 交给一个独立的线程来处理
 * 3. 把当前客户端的 socket 存入到一个 socket 集合中进行保持
 * 4. 接受客户端消息，然后推送给所有的 socket 进行接受
 *
 * @Auther Jun jie Yi
 * @Date 22:09 2021/8/14
 */

public class Server {

    //定义一个静态集合
    public static List<Socket> allSocketOnline = new ArrayList<>();

    public static void main(String[] args) {
        try {
            ServerSocket ss = new ServerSocket(9999);
            for (;;) {
                Socket socket = ss.accept();
                //把登录的用户放到一个集合中去
                allSocketOnline.add(socket);
                //为当前成功登录的socket独立分配一个线程来处理
                new ServerReaderSocket(socket).start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
